package com.hsurosy.api;

import com.hsurosy.api.dto.*;
import com.hsurosy.types.model.Response;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author Hsu琛君珩
 * @Date 2024-11-15 16:16
 * @Description 抽奖活动接口
 * @Version: v1.0.0
 */
public interface IRaffleActivityService {

    /**
     * 活动装配，数据预热缓存
     *
     * @param activityId 活动ID
     * @return 装配结果
     */
    Response<Boolean> armory(Long activityId);

    /**
     * 活动抽奖接口
     *
     * @param request 请求对象
     * @return 返回结果
     */
    Response<ActivityDrawResponseDTO> draw(ActivityDrawRequestDTO request);

    /**
     * 日历签到返利接口
     *
     * @param userId 用户ID
     * @return 签到返利结果
     */
    Response<Boolean> calendarSignRebate(String userId);

    /**
     * 判断是否完成日历签到返利接口
     *
     * @param userId 用户ID
     * @return 签到返利结果
     */
    Response<Boolean> isCalendarSignRebate(String userId);

    /**
     * 查询用户活动账户
     *
     * @param request 请求对象「活动ID、用户ID」
     * @return 返回结果「总额度、月额度、日额度」
     */
    Response<UserActivityAccountResponseDTO> queryUserActivityAccount(UserActivityAccountRequestDTO request);

    /**
     * 根据活动ID查询商品SKU列表
     *
     * @param activityId 活动ID
     * @return 商品SKU列表，包含商品信息、库存等
     */
    Response<List<SkuProductResponseDTO>> querySkuProductListByActivityId(Long activityId);

    /**
     * 查询用户积分账户余额
     *
     * @param userId 用户ID
     * @return 用户积分账户余额
     */
    Response<BigDecimal> queryUserCreditAccount(String userId);

    /**
     * 用户积分支付兑换商品接口
     *
     * @param request 请求对象，包含用户ID和商品SKU信息
     * @return 兑换是否成功
     */
    Response<Boolean> creditPayExchangeSku(SkuProductShopCartRequestDTO request);

}
